package main.leetcode.clockin.October;

import java.util.Arrays;

/**
 * 977. 有序数组的平方
 *
 * <p>给定一个按非递减顺序排序的整数数组 A，返回每个数字的平方组成的新数组，要求也按非递减顺序排序。
 *
 * <p>示例 1：<br>
 * 输入：[-4,-1,0,3,10] <br>
 * 输出：[0,1,9,16,100]
 *
 * <p>示例 2：<br>
 * 输入：[-7,-3,2,3,11] <br>
 * 输出：[4,9,9,49,121]
 *
 * <p>提示：<br>
 * 1 <= A.length <= 10000 <br>
 * -10000 <= A[i] <= 10000 <br>
 * A 已按非递减顺序排序。
 */
public class day16 {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(new day16().sortedSquares(new int[] {-4})));
    }

    /** 双指针 */
    public int[] sortedSquares(int[] A) {
        if (A == null || A.length == 0) {
            return A;
        }
        int[] res = new int[A.length];
        int i = 0, j = A.length - 1;
        int k = A.length;
        while (k-- > 0) {
            res[k] = A[i] * A[i] > A[j] * A[j] ? A[i] * A[i++] : A[j] * A[j--];
        }
        return res;
    }

    //    /** 排序 */
    //    public int[] sortedSquares(int[] A) {
    //        int n = A.length;
    //        int[] res = new int[n];
    //        for (int i = 0; i < n; ++i) {
    //            res[i] = A[i] * A[i];
    //        }
    //        Arrays.sort(res);
    //        return res;
    //    }
}
